#include "recbox.h"
#include "ui_recbox.h"
#include"recboxitem.h"

RecBox::RecBox(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::RecBox)
    , row(1)
    , col(4)

{
    ui->setupUi(this);

    // RecBoxItem* item = new RecBoxItem();
    // ui->recListUpHLayout->addWidget(item);
}

RecBox::~RecBox()
{
    delete ui;
}


void RecBox::initRecBoxUi(QJsonArray data, int row)
{
    //初始化推荐区还是音乐补给区看行数
    if(2 == row)
    {
        this->row = row;//row默认设置为1，重新设置
        col = 8;  //上下各四个
    }
    else
    {
        //推荐区，只需使用上半部分的recBox；
        ui->recListDown->hide();
    }

    //将musicplay处理的文本图片路径信息交给recBox
    imageList = data;
    currentIndex = 0;
    count = imageList.size()/col;//计算有多少组图：4/8个一组

    // 在RecBox控件添加RecBoxItem
    createRecBoxItem();
}



void RecBox::createRecBoxItem()
{

    // 删除RecBox内部之前的元素
    QList<RecBoxItem*> recUpList = ui->recListUp->findChildren<RecBoxItem*>();
    for(auto e : recUpList)
    {
        ui->recListUpHLayout->removeWidget(e);
        delete e;
    }

    QList<RecBoxItem*> recDownList = ui->recListDown->findChildren<RecBoxItem*>();
    for(auto e : recDownList)
    {
        ui->recListDownHLayout->removeWidget(e);
        delete e;
    }

    // 创建RecBoxItem对象，往RecBox中添加
    // 今日为你推荐：row=1  col=4
    // 音乐补给站：row=2 col=8
    //col4/8;假设每张图大小为1，翻页时则需要从下一组的第一张开始，而不能是0
    int index = 0;
    //for(int i = 0; i < col ; ++i)//没有翻页效果
    for(int i = currentIndex*col; i < col + col*currentIndex; ++i)
    {
        RecBoxItem* item = new RecBoxItem();

        // 设置音乐图片与对应文本
        QJsonObject obj = imageList[i].toObject();
        item->setRecText(obj.value("text").toString());
        item->setRecImage(obj.value("path").toString());

        //index从0开始;
        if(index >= col/2 && 2 == row)
        {
            //只有col为4开始才会添加recListDown的推荐
            ui->recListDownHLayout->addWidget(item);
        }
        else
        {
            ui->recListUpHLayout->addWidget(item);
        }

        index++;
    }
}


void RecBox::on_btUp_clicked()
{
    // 点击之后，需要显示前一组图片，如果已经是第0组图片，让其显示最后一组
    currentIndex--;
    if(currentIndex < 0)
    {
        currentIndex = count - 1;
    }

    //更改currentIndex从新生成对应的推荐达到换页的效果
    createRecBoxItem();
}


void RecBox::on_btDown_clicked()
{
    currentIndex++;
    if(currentIndex >= count)
    {
        currentIndex = 0;
    }

    createRecBoxItem();
}

